/*
 * Copyright (C) 2015 yixun All Rights Reserved.
 * 
 * AreaService.java
 */
package com.yixun.qfbao.api.service;

import com.yixun.common.page.Page;
import com.yixun.qfbao.apidto.*;
import com.yixun.qfbao.model.AgentRankReport;
import com.yixun.qfbao.model.AgentRankReportParam;
import com.yixun.qfbao.xf.model.CustomerPremises;
import com.yixun.qfbao.xf.model.Premises;
import com.yixun.qfbao.xf.model.dto.CustomerPremisesDto;

import java.math.BigDecimal;

/**
 * [文件名称]<br>
 * CustomerPremisesService.java<br>
 * <br>
 * [文件描述]<br>
 * service interface<br>
 * 客户报备
 * <br>
 * [修改记录]<br>
 * 2017-11-9 10:04:27<br>
 *
 * @author JHSong
 * @version 1.00
 */
public interface CPService {

    /**
     * 案场助手首页信息
     *
     * @param reqDto
     * @return
     */
    GetAssistantAppIndexResDto getAssistantAppIndex(GetAssistantAppIndexReqDto reqDto);

    /**
     * 巧渠道首页报备统计
     * 客户总量、昨日新增及待审数量
     *
     * @param reqDto
     * @return
     */
    GetCPStatisticsByPremisesResDto getCPStatisticsByPremises(GetCPStatisticsByPremisesReqDto reqDto);

    /**
     * 巧分销PC首页信息
     *
     * @param reqDto
     * @return
     * @throws Exception
     */
    GetAgencyPCIndexResDto getAgencyPcIndex(GetAgencyPCIndexReqDto reqDto) throws Exception;

    /**
     * 根据公司ID，佣金状态，员工ID获取成交量或报备数
     *
     * @param companyId
     * @param commissionStatus
     * @param staffId
     * @return
     */
    Integer selectCountByCompanyId(Long companyId, String commissionStatus, long staffId);

    /**
     * 获取某公司下的某员工佣金之和
     *
     * @param companyId
     * @param staffId
     * @return
     */
    BigDecimal getCommissionAmountTotal(Long companyId, Long staffId);

    /**
     * 导出报备记录
     *
     * @param reqDto
     * @return
     */
    ExportCPResDto exportCP(ExportCPReqDto reqDto);

    /**
     * 获取报备记录
     * 分页
     *
     * @param reqDto
     * @return
     */
    GetCPPageResDto getCPPage(GetCPPageReqDto reqDto);

    /**
     * 获取报备申诉记录
     * 分页
     *
     * @param reqDto
     * @return
     */
    GetCPAppealPageResDto getCPAppealPage(GetCPAppealPageReqDto reqDto);

    /**
     * 经纪人排行查询
     * @param agentRankReportParam
     * @param begin
     * @param end
     * @return
     */
    Page<AgentRankReport> queryAgentRankReport(AgentRankReportParam agentRankReportParam, int begin, int end);

    /**
     * 获取已报备的楼盘用户列表
     * @param getHasCPcusListReqDto
     * @return
     */
    GetHasCPcusListResDto getHasCPcusList(GetHasCPcusListReqDto getHasCPcusListReqDto);

    /**
     * 获取个人报备佣金列表
     * @param getPerCPCommissionListReqDto
     * @return
     */
    GetPerCPCommissionListResDto getPerCPCommissionList(GetPerCPCommissionListReqDto getPerCPCommissionListReqDto);

    /**
     * 编辑客户信息
     * @param reqDto
     * @return
     */
    EditCustomerInfoResDto editCustomerInfo(EditCustomerInfoReqDto reqDto);

    /**
     * 校验手机号是否需要补全
     * @param premises
     * @param customerPremises
     * @return
     */
    Boolean checkCompletePhone(Premises premises, CustomerPremises customerPremises, String newConfirmStatus);

    /**
     *  分销端小程序报备列表-分页
     * @param reqDto
     * @return
     */
    Page<CustomerPremisesDto> getWeappCPPage(GetCustomerPremisesPageReqDto reqDto);
}
